package com.ruoyi.service;

import com.ruoyi.domain.HhOrder;
import com.ruoyi.domain.HhUserAccount;
import com.ruoyi.dto.OrderPayDto;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 销售订单Service接口
 * @author chongjin
 * @date 2020-11-18
 */
public interface IHhOrderService {
    /**
     * 查询销售订单
     * @param orderId 销售订单ID
     * @return 销售订单
     */
    public HhOrder selectHhOrderById(String orderId);

    /**
     * 编辑销售订单页面
     * @param orderId 销售订单ID
     */
    public HhOrder getEditHhOrder(String orderId);

    /**
     * 查询销售订单列表
     * @param hhOrder 销售订单
     * @return 销售订单集合
     */
    public List<HhOrder> selectHhOrderList(HhOrder hhOrder);

    /**
     * 新增销售订单
     * @param hhOrder 销售订单
     * @return 结果
     */
    public int insertHhOrder(HhOrder hhOrder);

    /**
     * 新增销售订单校验
     * @param hhOrder 销售订单
     * @return 结果
     */
    public int createCheck(HhOrder hhOrder);

    /**
     * 新增销售订单
     * @param hhOrder 销售订单
     * @return 结果
     */
    public HhOrder createOrder(HhOrder hhOrder);

    /**
     * 修改销售订单
     * @param hhOrder 销售订单
     * @return 结果
     */
    public int updateHhOrder(HhOrder hhOrder);

    /**
     * 批量删除销售订单
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteHhOrderByIds(String ids);

    /**
     * 删除销售订单信息
     * @param orderId 销售订单ID
     * @return 结果
     */
    public int deleteHhOrderById(String orderId);

    /**
     * 生成订单编号
     * @return 结果
     */
    public String createOrderId();

    /**
     * 付款信息
     * @param orderId 销售订单ID
     * @return 结果
     */
    public Map getPayInfo(String orderId);

    /**
     * 订单付款
     * @param orderPayDto 参数
     * @return 结果
     */
    public int orderPay(OrderPayDto orderPayDto);

    /**
     * 师傅结清
     * @param orderId 结算单ID
     * @return 结果
     */
    public int orderWorkerClear(String orderId);

    /**
     * 生成结算单
     * @param orderPayDto 参数
     * @return 销售订单
     */
    public HhOrder createCloseHhOrder(OrderPayDto orderPayDto);

    /**
     * 创建退货单
     * @param orderId 销售单ID
     * @return 结果
     */
    public HhOrder createReturnHhOrder(String orderId);

    /**
     * 获得结算单信息
     * @param orderId 销售单ID
     * @return 结果
     */
    public HhOrder getCloseInfo(String orderId);

    /**
     * 获得结算单所有付款
     * @param orderId 销售单ID
     * @return 结果
     */
    public BigDecimal getOrderAllPay(String orderId);

    /**
     * 获得结算单所有退货款
     * @param orderId 销售单ID
     * @return 结果
     */
    public BigDecimal getOrderAllReturn(String orderId);

    /**
     * 查询所有销售单
     * @param hhOrder 销售单ID
     * @return 结果
     */
    public List<HhOrder> selectAllSaleOrder(HhOrder hhOrder);

    /**
     * 查询所有退货单
     * @param hhOrder 销售单ID
     * @return 结果
     */
    public List<HhOrder> selectAllReturnOrder(HhOrder hhOrder);

    /**
     * 查询所有付款记录
     * @param hhOrder 销售单ID
     * @return 结果
     */
    public List<HhUserAccount> selectAllPayAccount(HhOrder hhOrder);

}
